﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.Text;

namespace LASLogic.BusinessLayer.DataModel
{
    /// <summary>
    /// Clase que maneja la compañia de la
    /// </summary>
    [DataContract]
    public class Company
    {


        #region Constructor

        /// <summary>
        /// Constructor que permite crear un objeto Compañia
        /// </summary>
        /// <param name="companyId">Identificador único de la compañia</param>
        /// <param name="companyName">Nombre de la compañia</param>
        /// <param name="taxIdentification">Cédula Jurídica de la compañía</param>
        /// <param name="logo">Logotipo de la compañía</param>
        /// <param name="telephones"></param>
        /// <param name="accountCatalog">Catalogo de cuentas de la compañia</param>
        public Company(int companyId, string companyName, string taxIdentification, byte[] logo, List<Phone> telephones, AccountCatalog accountCatalog)
        {
            CompanyId = companyId;
            CompanyName = companyName;
            TaxIdentification = taxIdentification;
            Logo = logo;
            Telephones = telephones;
            AccountCatalog = accountCatalog;
        }

        /// <summary>
        /// Constructor vacio 
        /// </summary>
        public Company()
        {
        }
        #endregion

        #region Properties
        /// <summary>
        /// Identificador de la compañia
        /// </summary>
        [DataMember]
        public int CompanyId { get; set; }
        /// <summary>
        /// Nombre de la compañía
        /// </summary>
        [DataMember]
        public string CompanyName { get; set; }
        /// <summary>
        /// Cédula Jurídica de la compañía
        /// </summary>
        [DataMember]
        public string TaxIdentification { get; set; }
        /// <summary>
        /// Logotipo de la compañía
        /// </summary>
        [DataMember]
        public byte[] Logo { get; set; } 
        /// <summary>
        /// Lista de teléfonos de la compañia
        /// </summary>
        [DataMember]
        public List<Phone> Telephones { get; set; }
        /// <summary>
        /// Identificador del catálogo contable
        /// </summary>
        [DataMember]
        public AccountCatalog AccountCatalog { get; set; }
        /// <summary>
        /// Todos los asientos de la compañia
        /// </summary>
        [DataMember]
        public List<Entry> Entries { get; set; }
        /// <summary>
        /// Moneda Local
        /// </summary>
        [DataMember]
        public Currency LocalCurrency{ get; set; }
        /// <summary>
        /// Moneda del sistema
        /// </summary>
        [DataMember]
        public Currency SystemCurrency { get; set; }


        #endregion


    }
}
